/*
 Copyright (c) 2013 MeherTJ G. All rights reserved.
 License: LGPL for personnal study or free software.
 */

#pragma once

#include "zen_image.h"
#include "zen_image_coder.h"

namespace Zen
{
	class ImageJPGEncoder : public ImageEncoder
	{
	public:
		ImageJPGEncoder(float quality);
		virtual std::vector<uint8_t> encode(Image const&) override;
	private:
		float mQuality = 1.f; // 1.0 high, 0.0:low
	};

	class ImagePNGEncoder : public ImageEncoder
	{
	public: virtual std::vector<uint8_t> encode(Image const&) override;
	};
	class ImageTGAEncoder : public ImageEncoder
	{
	public: virtual std::vector<uint8_t> encode(Image const&) override;
	};
	class ImageBMPEncoder : public ImageEncoder
	{
	public: virtual std::vector<uint8_t> encode(Image const&) override;
	};
	class ImageSTBDecoder : public ImageDecoder
	{
	public: virtual std::shared_ptr<Image> decode(const std::vector<uint8_t>& value) override;
	};
}

